package br.com.ffm.praticas.teste;

import junit.framework.Assert;

import org.junit.Before;
import org.junit.Test;

import br.com.ffm.praticas.modelo.Email;
import br.com.ffm.praticas.modelo.Mensagem;
import br.com.ffm.praticas.modelo.SenhaInvalidaException;
import br.com.ffm.praticas.modelo.Usuario;
import br.com.ffm.praticas.modelo.UsuarioInexistenteException;

public class EmailTest {

	private Email sistema;
	private Usuario usuario1;
	private Usuario usuario2;
	private Mensagem msg;
	
	@Before
	public void setUp() throws Exception {
		sistema = new Email();
		usuario1 = new Usuario("email1@teste.com", "teste", "teste", "teste");
		usuario2 = new Usuario("email2@teste.com", "teste", "teste", "teste");
		sistema.addUsuario(usuario1);
		sistema.addUsuario(usuario2);
		
		msg = new Mensagem(usuario1.getEnderecoEmail(), usuario2.getEnderecoEmail(), "assunto teste", "mesagem teste");
		
	}

	@Test
	public void testEfetuarLogin() throws UsuarioInexistenteException, SenhaInvalidaException {
		Assert.assertEquals(usuario1, sistema.efetuarLogin("email1@teste.com", "teste"));
		Assert.assertEquals("email1@teste.com", sistema.efetuarLogin("email1@teste.com", "teste").getEnderecoEmail());
	}

	@Test
	public void testEnviarMensagem() throws UsuarioInexistenteException {
		usuario1.enviarMensagem(sistema, msg);
		Assert.assertTrue(usuario1.getAllMsg().contains(msg));
		Assert.assertTrue(usuario2.getAllMsg().contains(msg));
	}

}
